from LectorDeArchivos import LectorDeArchivos
from DetectorInsultosLiterales import DetectorInsultosLiterales
from DetectorDeAumentativos import DetectorDeAumentativos
from DetectorDeDiminutivos import DetectorDeDiminutivos
from DetectorDePeyorativos import DetectorDePeyorativos
from CombinadorDeTiposDeInsultosConfigurados import CombinadorDeTiposDeInsultosConfigurados

class AdministradorDetectoresTipoInsulto:
	
	def mapaEstrategias(self):
		return { 'Aumentativo': DetectorDeAumentativos(),
				'Diminutivo': DetectorDeDiminutivos(),
				'Peyorativo': DetectorDePeyorativos()}
	
	def detectarEn(self, comentario):

		detectores = self.obtenerDetectores()
		
		literalesDetectados = DetectorInsultosLiterales().detectar(comentario)
		detectados = [literalesDetectados]
        
		for detector in detectores:
			detectados.append(detector.detectar(comentario))
		
		detectados.append(self.combinaciones(comentario))
		
		return detectados

	def combinaciones(self, comentario):
		estrategias = self.mapaEstrategias().keys()
		combinacionesDetectadas = CombinadorDeTiposDeInsultosConfigurados().detectarCombinaciones(estrategias, comentario)
		return ('Combinacion', combinacionesDetectadas)

	def obtenerDetectores(self):
		estrategiasLeidas = LectorDeArchivos().leerEstrategias()
		detectores = []
        
		for estrategia in estrategiasLeidas:
			if estrategia in self.mapaEstrategias().keys():
				detectores.append(self.mapaEstrategias()[estrategia])
                
		return detectores
